package com.oneinlet

/**
 * Created by WangZiHe on 2018/5/14
 * QQ/WeChat:648830605
 * QQ-Group:368512253
 * Blog:www.520code.net
 * Github:https://github.com/yancheng199287
 */

object YCRegex {

    /**
     * 判断字符串是双精度数字，正负，单精度，整型都支持判断，如 +99.99  99.0  -100  0.33 都是返回true"
     * @param num  接收一个字符串
     * @return  布尔值，如果是数字返回true，反之false
     * */
    fun isNumeric(p: String): Boolean {
        // 解决 +-正负 0.0正常数字    解决 009.00   99.   等非正常的数字

        //判断是否小数点
        val pointRegex = "^((-)|(\\+)|)+([0-9])*+(\\.)+([0-9])*$"

        //判断小数点左边大于一位数的情况，高位不能为0
        val doubleRegex1 = "^((-)|(\\+)|)+(([1-9]+[0-9]*)+(\\.)+[0-9]+)$"

        //判断小数点左边等于一位数的情况，高位只能为0-9
        val doubleRegex2 = "^((-)|(\\+)|)+(([0-9])(\\.)+[0-9]+)$"

        //判断整型，无小数点
        val intRegex = "^((-)|(\\+)|)([0-9]*)$"
        if (p.matches(pointRegex.toRegex())) {
            if (p.matches(doubleRegex1.toRegex())) {
                return true
            } else if (p.matches(doubleRegex2.toRegex())) {
                return true
            }
        } else {
            if (p.matches(intRegex.toRegex())) {
                return true
            }
        }
        return false
    }

    /**
     * 判断字符串是整型数字"
     * @param num  接收一个字符串
     * @return  布尔值，如果是数字返回true，反之false
     * */
    fun isInt(p: String): Boolean {
        //判断整型，无小数点
        val intRegex = "^((-)|(\\+)|)([0-9]*)$"
        if (p.matches(intRegex.toRegex())) {
            return true
        }
        return false
    }

}